#include <iostream>

// 50. pow(x, n)
// 实现 pow(x, n) ，即计算 x 的整数 n 次幂函数（即，x^n ）。

class Solution {
public:
    double myPow(double x, int n) {
        long m = n;
        if(m == 0)
            return 1;
        if(m > 0)
            return Pow(x, m);
        else
            return 1.0 / Pow(x, -m);
    }

private:
    double Pow(double x, long n)    // 递归计算 x^n(n > 0)
    {
        if(n == 1)
            return x;
        // 递归计算
        double p = Pow(x,n/2);

        if(n % 2 == 1)  // n 为奇数
            return x * p * p;
        else            // n 为偶数
            return p * p;
    }
};

int main() {
    std::cout << Solution().myPow(2.0, 10) << std::endl;    // 1024.00
    std::cout << Solution().myPow(2.1, 3) << std::endl; // 9.261
    std::cout << Solution().myPow(2.0, -2) << std::endl;    // 0.25
    return 0;
}
